<?php
$pdo = Db::getPDO();
$pdo->beginTransaction();
$errors = array();
try {
	if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
		$errors[] = array('message'=> 'รูปแบบ email ไม่ถูกต้อง', 'code'=> 1001);
	}
	if(Account::instance()->duplicateEmail($_POST['email'])){
		$errors[] = array('message'=> 'email ซ้ำ', 'code'=> 1001);
	}
	if(!preg_match("/[0-9A-Za-z]{4,16}/", $_POST['password'])){
		$errors[] = array('message'=> 'ต้องเป็นภาษาอังกฤษ 4-16 หลักเท่านั้น', 'code'=> 1002);
	}
	if($_POST['repeatPassword'] != $_POST['password']){
		$errors[] = array('message'=> 'password ไม่ตรงกัน', 'code'=> 1003);
	}
    $phone = trim($_POST['phone']);
    if(!preg_match("/[0-9]{10}/", $_POST['phone']) && empty($phone)){
        $errors[] = array('message'=> 'ต้องเป็นตัวเลข 10 หลักเท่านั้น', 'code'=> 1004);
    }
	if(count($errors) > 0){
		throw new Exception('Register Error', 2000);
	}

	Account::instance()->register($_POST['email'], $_POST['password'], $_POST['phone'], $_POST['name'], $_POST['address']);
	
	if(count($errors) > 0){
		throw new Exception('Register Error', 2000);
	}
    $pdo->commit();
	echo json_encode(array('success'=> true));
}
catch (Exception $ex) {
    $pdo->rollback();
	Log::error($ex);
	echo json_encode(array('success'=> false, 'errors'=> $errors));
    throw $ex;
}